package com.snopy.leetcode.index1_1000.index701_800;

import java.util.HashMap;
import java.util.Map;

/**
 * @author snopy
 * @version 1.0.0
 * @classname Question824
 * @description 山🐏拉丁文
 *给你一个由若干单词组成的句子sentence ，单词间由空格分隔。每个单词仅由大写和小写英文字母组成。
 *
 * 请你将句子转换为 “山羊拉丁文（Goat Latin）”（一种类似于 猪拉丁文- Pig Latin 的虚构语言）。山羊拉丁文的规则如下：
 *
 * 如果单词以元音开头（'a', 'e', 'i', 'o', 'u'），在单词后添加"ma"。
 * 例如，单词 "apple" 变为 "applema" 。
 * 如果单词以辅音字母开头（即，非元音字母），移除第一个字符并将它放到末尾，之后再添加"ma"。
 * 例如，单词 "goat" 变为 "oatgma" 。
 * 根据单词在句子中的索引，在单词最后添加与索引相同数量的字母'a'，索引从 1 开始。
 * 例如，在第一个单词后添加 "a" ，在第二个单词后添加 "aa" ，以此类推。
 * 返回将 sentence 转换为山羊拉丁文后的句子。
 *
 * 示例 1：
 *
 * 输入：sentence = "I speak Goat Latin"
 * 输出："Imaa peaksmaaa oatGmaaaa atinLmaaaaa"
 * 示例 2：
 *
 * 输入：sentence = "The quick brown fox jumped over the lazy dog"
 * 输出："heTmaa uickqmaaa rownbmaaaa oxfmaaaaa umpedjmaaaaaa overmaaaaaaa hetmaaaaaaaa azylmaaaaaaaaa ogdmaaaaaaaaaa"
 *
 *
 * @email 77912204@qq.com
 * @date 2022/04/21 19:19
 */
public class Question824 {
    public static void main(String[] args) {
        String sentence = "I speak Goat Latin";
        String s = toGoatLatin2(sentence);
        System.out.println(s);
        System.out.println("Imaa peaksmaaa oatGmaaaa atinLmaaaaa");
    }

    public static String toGoatLatin(String sentence) {
        Map<Character,String> map = new HashMap<>();
        map.put('a',"1");
        map.put('e',"1");
        map.put('i',"1");
        map.put('o',"1");
        map.put('u',"1");
        map.put('A',"1");
        map.put('E',"1");
        map.put('I',"1");
        map.put('O',"1");
        map.put('U',"1");
        String[] arr = sentence.split(" ");
        StringBuilder str = new StringBuilder();
        StringBuilder suffix = new StringBuilder("a");
        for (int i = 0; i < arr.length; i++) {
                Character s = arr[i].charAt(0);
                if(map.containsKey(s)){
                    str.append(arr[i]).append("ma").append(suffix);
                }else {
                    str.append(arr[i].substring(1)).append(s).append("ma").append(suffix);
                }
            suffix.append("a");
            str.append(" ");
        }
        return str.deleteCharAt(str.length()-1).toString();
    }
    public static String toGoatLatin2(String sentence) {

        String[] arr = sentence.split(" ");
        StringBuilder str = new StringBuilder();
        StringBuilder suffix = new StringBuilder("a");
        for (int i = 0; i < arr.length; i++) {
            char s = arr[i].charAt(0);
            if("aeiouAEIOU".indexOf(s)>0){
                str.append(arr[i]).append("ma").append(suffix);
            }else {
                str.append(arr[i].substring(1)).append(s).append("ma").append(suffix);
            }
            suffix.append("a");
            str.append(" ");
        }
        return str.deleteCharAt(str.length()-1).toString();
    }
}
